www.gusucode.com > wxApp PHP版微信小程序CMS系统 v1.0PHP源码程序 > wxApp PHP版微信小程序CMS系统 v1.0/wxAppCMS_v1.0.0/wxAppCMS_v1.0.0/template/wxapp/pages/user/publish/index.js

    let $APP = getApp();
let $wxAppCMS = $APP.wxAppCMS();

$wxAppCMS.addData({
    userInfo: {},
    counter: 0,
    maxlength: 10000,
    category_list: [],
    topCategory: [],
    subCategory: [],
    ms_index: 0,
    cid: 0,
    placeholder: false,
    textarea: '',
    progress: {},
    mediaCount: 0
});
$wxAppCMS.bodyData = [];


$wxAppCMS.getCategory = function() {
    this.data_loading('show');
    let that = this;
    let $url = this.iURL.make(
        'index', { tpl: 'publish.category' }
    );
    this.GET($url).then(res => {
        that.data_loading('hide');
        that.page_loading(false, true);

        let top = res.topCategory;
        top.unshift({ cid: "0", name: "请选择栏目", child: "1" });

        let sub = res.subCategory;
        sub.unshift({"rootid": "0","child": [{ "cid": "0", "name": "选择栏目"}]});

        wx.setStorageSync('category_list',{top,sub});

        that.setData({
            category_list: [top, sub[0]['child']]
        });
    });
};
$wxAppCMS.getSubCategoryById = function(idx) {
    let category_list = wx.getStorageSync('category_list');
    let rootid = category_list.top[idx].cid;
    let tempObj = [];
    let subCategory = category_list.sub;
    for (let i = 0; i < subCategory.length; i++) {
        if (subCategory[i].rootid == rootid) {
            tempObj = subCategory[i].child;
            break;
        }
    }
    return tempObj;
}
$wxAppCMS.bindPickerChange = function(e) {
    // console.log(e.detail);
    if (e.detail.column == "0") {
        let category_list = wx.getStorageSync('category_list');
        let subCategory   = this.getSubCategoryById(e.detail.value);

        this.setData({
            placeholder: true,
            cid: subCategory[0]['cid'],
            category_list: [category_list.top, subCategory]
        })
    }

}
$wxAppCMS.catchDelImage = function(e) {
    let $data = this.get_dataset(e);
    let rootid = $data['rootid'];
    let key = $data['key'];
    this.bodyData[rootid]['content'].splice(key, 1);
    if (this.bodyData[rootid]['content'].length == 0) {
        this.bodyData.splice(rootid, 1);
    }
    this.data.mediaCount--;
    this.setData({
        bodyData: this.bodyData
    });
}
$wxAppCMS.bindDelBody = function(e) {
    let $data = this.get_dataset(e);
    let index = $data['index'];
    this.bodyData.splice(index, 1);
    if ($data['type'] != 'text') {
        this.data.mediaCount -= $data['len'];
    }
    this.setData({
        bodyData: this.bodyData
    });
}
$wxAppCMS.setBody = function(content, type) {
    let that = this;
    type = type || 'text';
    let $bodyId = wx.getStorageSync('bodyId');

    if (type == 'text') {
        let $data = this.bodyData[$bodyId];
        if ($data && $data['type'] != 'text') {
            $bodyId++;
        }
    } else {
        let sss = 9 - this.data.mediaCount;
        if (sss < 0) {
            this.alert("单次最多只能上传9张图片/视频");
            return;
        } else {
            let ss = sss - content.length;
            if (ss < 0) {
                this.alert("单次最多只能上传9张图片/视频");
                content = content.slice(0, sss);
            }
        }
        this.data.mediaCount += content.length;
        $bodyId++;
        this.setData({
            textarea: ''
        });
    }
    let uuid = this.utils.uuid();
    this.bodyData[$bodyId] = {
        uuid,
        type,
        content
    };

    this.setData({
        bodyData: this.bodyData
    });
    if (type != 'text') {
        this.data.mediaCount = 0;
        this.bodyData.forEach(function(data, index) {
            if (data['type'] != 'text') {
                that.data.mediaCount += data['content'].length;
            }
        });
    }
    console.log('$bodyId++', $bodyId);
    wx.setStorageSync('bodyId', $bodyId);
    wx.setStorageSync('bodyData', this.bodyData);
}

$wxAppCMS.bindBodyBlur = function(e) {
    let text = e.detail.value;
    if (text) this.setBody(text);
}
$wxAppCMS.textTap = function(e) {
    let bodyId = wx.getStorageSync('bodyId');
    bodyId++;
    wx.setStorageSync('bodyId', bodyId);
    this.setData({
        textarea: ''
    });
}
$wxAppCMS.bindBodyInput = function(e) {
    let text = e.detail.value;
    this.setData({
        counter: text.length
    });
}

function chooseImage(index) {
    let that = this;
    let source = ['album', 'camera'];
    wx.chooseImage({
        count: 9, // 默认9
        sizeType: ['compressed'], // 可以指定是原图还是压缩图,默认二者都有
        sourceType: source[index] || ['album', 'camera'], // 可以指定来源是相册还是相机,默认二者都有
        success: function(res) {
            that.setBody(res.tempFilePaths, 'image');
        }
    })
}

function chooseVideo() {
    let that = this;
    wx.chooseVideo({
        sourceType: ['album', 'camera'],
        maxDuration: 60,
        camera: 'back',
        success: function(res) {
            that.setBody([res.tempFilePath], 'video');
        }
    })
}
$wxAppCMS.mediaTap = function(e) {
    $APP.ONESELF = true;
    let that = this;
    let chooseMap = [chooseImage, chooseImage, chooseVideo];
    wx.showActionSheet({
        itemList: ['拍照', '选择照片', '选择视频'],
        success: function(res) {
            let index = res.tapIndex;
            chooseMap[index].call(that, index);
        },
        fail: function(res) {
            console.log(res.errMsg)
        }
    });
}
$wxAppCMS.formSubmit = function(e) {
    let that = this;
    let $param = e.detail.value;

    console.log($param);

    if (!$param['title']) {
        that.alert("请填写文章标题");
        return '';
    }
    if (!$param['cid'] || $param['cid'] == "0") {
        that.alert("请选择文章栏目");
        return;
    }

    if (!this.bodyData.length) {
        that.alert("请填写文章内容");
        return;
    }

    this.iHttp.uploadTask(function(res, path) {
        let pp = {}
        pp[path] = res.progress;
        let progress = that.utils.extend(true, that.data.progress, pp);
        that.setData({ 'progress': progress });
    });
    // bodyData(this.bodyData).then().then(upload)
    var uploads = [];
    that.bodyData.forEach(function(data, index) {
        if (data['type'] != 'text') {
            data['content'].forEach(function(path, i) {
                console.log(path);
                if (path.indexOf('//tmp') !== -1 ||
                    path.indexOf('wxfile://') !== -1 ||
                    path.indexOf('tmp_') !== -1
                    )
                {
                    let u = that.UPLOAD(path);
                    uploads.push(u);
                }
            });
        }
    });
    if (uploads.length > 0) {
        wx.showToast({
            title: '图片/视频上传中',
            icon: 'loading',
            mask: true,
            duration: 30000
        })
        // 同时执行所有上传,并在它们都完成后执行then: // 获得一个Array: ['P1', 'P2']
        Promise.all(uploads).then(function(results) {
            let $urls = [];
            results.forEach(function(ret, index) {
                let obj = JSON.parse(ret);
                if (obj.code) {
                    let $md5 = that.utils.get_file_md5(obj.original);
                    $urls[$md5] = obj.url
                }
            });
            that.bodyData.forEach(function(data, index) {
                if (data['type'] != 'text') {
                    data['content'].forEach(function(path, i) {
                        let $md5 = that.utils.get_file_md5(path);
                        let $url = $urls[$md5];
                        if ($url) {
                            that.bodyData[index]['content'][i] = $urls[$md5];
                        }
                    });
                }
            });
            wx.hideToast();
            // console.log($urls);
            // console.log(that.bodyData);
            publish_param();
        }).catch(ret => {
            console.log(ret);
        });
    } else {
        publish_param();
    }

    function publish_param() {
        // let $body = [];
        // that.bodyData.forEach(function(data,index){
        //     if(data['type']=='text'){
        //         if(data['content']) $body[index]=data['content']+"\n";
        //     }else{
        //         $body[index] = [];
        //         data['content'].forEach(function(path,i){
        //             if(path.indexOf('//tmp')===-1){
        //                 $body[index][i]="![]("+path+")\n";
        //             }
        //         });
        //     }
        // });
        $param['body'] = JSON.stringify(that.bodyData);
        publish_post($param);
    }

    function publish_post($param) {
        wx.showToast({
            title: '提交中,请稍候',
            icon: 'loading',
            duration: 3000
        })
        let $url = that.iURL.make(
            'wxapp', { do: 'publish' }
        );
        that.POST($url, $param).then(res => {
            wx.hideToast();
            wx.showModal({
                content: res.msg,
                showCancel: false,
                success: function(res) {
                    if (res.confirm) {
                        wx.navigateBack({
                            delta: 2
                        })
                    }
                }
            });
        }).catch(ret => {
            that.alert(ret.msg);
        });
    }
}
$wxAppCMS.formReset = function() {
    console.log('form发生了reset事件')
}
$wxAppCMS.load = function() {
    wx.setStorageSync('bodyId', 0);
    wx.setStorageSync('bodyData', []);
}
$wxAppCMS.main = function() {
    // this.page_loading(false, true);;
    this.setData({
        APP: this.$globalData.appInfo,
    });

    this.getCategory();
}
$wxAppCMS.run();